package com.cn.esermis.model;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

@Data
public class FactorModel {

    public static void main(String[] args) {

        String json = "{\n" +
                "\t\"SIZE\": \"0114\",\n" +
                "\t\"QN\": \"20241015151000142\",\n" +
                "\t\"ST\": \"59\",\n" +
                "\t\"CN\": \"2011\",\n" +
                "\t\"PW\": \"123456\",\n" +
                "\t\"MN\": \"399435X0017503\",\n" +
                "\t\"Flag\": \"5\",\n" +
                "\t\"DataTime\": \"20241015151000\",\n" +
                "\t\"CP\": [{\n" +
                "\t\t\"Rtd\": \"Fb\",\n" +
                "\t\t\"factor\": \"p10103\"\n" +
                "\t}],\n" +
                "\t\"End\": \"4DC0\\r\\n\"\n" +
                "}";
        FactorModel javaObject = JSON.parseObject(JSON.toJSONString(json), FactorModel.class);
        System.out.println(javaObject);
    }

    public FactorModel factorModel(JSONObject msg){
//        FactorModel javaObject = msg.toJavaObject(FactorModel.class);
        FactorModel javaObject = JSON.parseObject(JSON.toJSONString(msg), FactorModel.class);
        return javaObject;
    }

    private String SIZE;

    /**
     * 请求编码 QN-精确到毫秒的时间戳:QN=YYYYMMDDhhmmsszzz，用来唯一标识一次命令交互
     */
    private String QN;
    /**
     * ST=系统编码, 系统编码取值详见 6.6.1 章节的表 5《系统编码表》
     */
    private String ST;
    /**
     *命令编码 CN CN=命令编码, 命令编码取值详见 6.6.5 章节的表 9《命令编码表》
     */
    private String CN;
    /**
     *访问密码
     */
    private String PW;
    /**
     * MN=设备唯一标识，这个标识固化在设备中，用于唯一标识一个设备。MN 由 EPC-96 编码转化的字符串组成，即 MN 由 24 个 0~9，A~F 的字符组成
     */
    private String MN;

    /**
     * 拆分包及应答标志
     */
    private Integer Flag;

    /**
     * 数据时间信息
     */
    private String DataTime;


    private List<CP> CP = new ArrayList<>();

}

